RNS
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
RNS (Reticulum Network Stack) is the reference implementation of Reticulum written in Python and maintained by Mark Qvist. It is licensed under the Reticulum License ↗. The Reticulum Protocol is defined by this reference implementation and the manual ↗.cite-ref-1[1]
RNS runs on pretty much any system that can run Python 3.
Contents
Installing
See Getting Started Fast ↗ in the manual. Essentially, pip install rns.
Use rnsd to run RNS as a background or foreground service.
Configuration
Each instance of RNS has its own configuration directory, the default being ~/.reticulum. You can specify a different configuration directory with rnsd --config=<config directory>.
On first run, a configuration file will be created in this directory (eg. ~/.reticulum/config) with a basic but functional configuration. To see all options, run rnsd --exampleconfig.
Shared instance
By default, the first program to launch RNS will create a shared instance that other programs can use.
When a shared instance crashes, any programs connected to it will lose their connection. If you are running several programs that use RNS, starting and terminating at different times, consider running a master rnsd instance as a service for other programs to use on demand.cite-ref-0-2-0[2]
• rnsd handles networking and contains the transport node functionality.
• lxmd handles messaging and contains the propagation node functionality. It starts rnsd automatically on launch.
• nomadnet handles NomadNet's features including its page hosting functionality. It starts lxmd automatically on launch.
Each have their own configuration file where the functionality can be enabled/disabled.
If you only want to use a client like NomadNet or MeshChatX, you can just run that directly and it will automatically launch rnsd (if it is not already running).
Multiple instances
It is also possible to run multiple instaces of RNS on the same system by specifying a different configuration directory for each instance of rnsd with --config=<config directory>, or --rnsconfig=<config directory> for any of the utilities. Running multiple instances uses more memory.
Utilities
RNS includes a number of useful command-line utilities besides the rnsd daemon:
• rncp – File transfer utility
• rngit – Git repository node management
• rnir – Distributed identity resolver (WIP)
• rnpkg – Package manager (WIP)
• rnprobe – Probe utility
• rnsh – Remote shell utility
• rnstatus – Reticulum Network Stack status
• rnx – Remote execution utility
Tips and tricks
Keeping up to date
Subscribe to PyPi's RSS feed to be notified of new releases:
https://pypi.org/rss/project/rns/releases.xml
Use rngit to fetch the version number of the latest release:
rngit release rns://7649a50d84610232d1416b41d2896aff/reticulum/reticulum list | tail -1 | awk '{print $NF}'
Update RNS over Reticulum
Security hardening
Reticulum apps may be isolated by running a primary rnsd instance as a non-privileged user, and running each isolated app as its own user with its own rnsd instance/configuration, connected to the primary instance over a BackboneInterface.
The primary instance has a system-local BackboneInterface serving the apps' instances, and external interfaces for connecting to the wider network. Each isolated app points to the RNS configuration of its own instance (eg. rngit --rnsconfig=<app's rns config>), which in turn connects to the primary instance over a BackboneInterface.
Running multiple instances like this uses more memory and adds an extra hop, but the performance penalty is negligible.
See also
References
cite-note-0-22. ↑ API Reference › Reticulum, Manual. a8d24177d946de4f1f0a0fe1af9a1338:/page/blob.mu ↗
External links
RNS utilities
Reticulum Network Stack
Type: Implementation
Developer: Mark Qvist
License: Reticulum License ↗
Written in: Python
Platform: Linux, macOS, Windows, OpenBSD, Android, iOS
Since: 2016-05-29 ↗
Repository: Aleph Git ↗
Documentation: Reticulum Network Stack Manual ↗